<?php


namespace App\Http\Controllers\Car;


use App\Http\Controllers\Controller;
use App\Models\CarModels\GreenStaff;
use App\Models\CarModels\GreenTask;
use Illuminate\Database\QueryException;
use Illuminate\Http\Request;
use Validator;
/**
 * @group 运营管理->绿化运营->任务划分->任务量分析
 * 采用 restful api
 *
 * Body Parameters 表示请求的所需要的参数
 *
 * Query Parameters 表示返回参数的名称
 */
class GreenTaskController extends Controller
{
    /**
     * 任务量分析查看
     *
     * @bodyParam employee_leader string optional  负责人
     * @bodyParam vegetation_type int optional  植被种类
     * @bodyParam start_time datetime optional  开始时间
     * @bodyParam finish_time datetime optional  完成时间
     *
     * @queryParam  date 日期
     * @queryParam  task_type 任务类型
     * @queryParam  vegetation_type 植被种类
     * @queryParam  number 数量
     * @queryParam  company 单位
     * @queryParam  start_time 开始时间
     * @queryParam  finish_time 完成时间
     * @queryParam  time 工作时长
     * @queryParam  department 负责组
     * @queryParam  employee_leader 负责人
     * @queryParam  level 等级
     * @queryParam  employee 成员
     * @queryParam  day_work 日工作量
     *
     */
    public function index(Request $request)
    {
        $projectAreas = GreenTask::where(function ($q) use($request){
            $request->has('employee_leader') && $q->where('employee_leader', 'like', "%{$request->get('employee_leader')}%");
            $request->has('vegetation_type') && $q->where('vegetation_type', 'like', "%{$request->get('vegetation_type')}%");
            $request->has('start_time') &&  $q->where('start_time','<=',$request->get('start_time'));
            $request->has('finish_time') &&  $q->where('finish_time','>=',$request->get('finish_time'));
        })->get();
        return response()->json(encodeMsg($projectAreas,200));
    }
    /**
     * 任务量分析查看单条
     *
     *
     * @queryParam  date 日期
     * @queryParam  task_type 任务类型
     * @queryParam  vegetation_type 植被种类
     * @queryParam  number 数量
     * @queryParam  company 单位
     * @queryParam  start_time 开始时间
     * @queryParam  finish_time 完成时间
     * @queryParam  time 工作时长
     * @queryParam  department 负责组
     * @queryParam  employee_leader 负责人
     * @queryParam  level 等级
     * @queryParam  employee 成员
     * @queryParam  day_work 日工作量
     *
     */
    public function show($id)
    {
        $projectAreas = GreenTask::find($id);
        if($projectAreas == []) {
            return response()->json(encodeMsg(["message" => "没有该任务量信息!"], 404));
        } else {
            return response()->json(encodeMsg($projectAreas,200));
        }
    }
    /**
     * 任务量分析添加
     *
     * @bodyParam  date string required 日期
     * @bodyParam  task_type string required 任务类型
     * @bodyParam  vegetation_type string required 植被种类
     * @bodyParam  number string required 数量
     * @bodyParam  company string required 单位
     * @bodyParam  start_time datetime required 开始时间
     * @bodyParam  finish_time datetime required 完成时间
     * @bodyParam  time string required 工作时长
     * @bodyParam  department string required 负责组
     * @bodyParam  employee_leader string required 负责人
     * @bodyParam  level string required 等级
     * @bodyParam  employee string required 成员
     * @bodyParam  day_work string required 日工作量
     *
     * @queryParam  date 日期
     * @queryParam  task_type 任务类型
     * @queryParam  vegetation_type 植被种类
     * @queryParam  number 数量
     * @queryParam  company 单位
     * @queryParam  start_time 开始时间
     * @queryParam  finish_time 完成时间
     * @queryParam  time 工作时长
     * @queryParam  department 负责组
     * @queryParam  employee_leader 负责人
     * @queryParam  level 等级
     * @queryParam  employee 成员
     * @queryParam  day_work 日工作量
     *
     */
    public function store(Request $request)
    {
        $e = genValidate();
        $validator = Validator::make($request->all(),$e);
        if($validator->fails()){
            return response()->json(encodeMsg($validator->errors()->messages(),400),400);
        }
        try{
            $projectAreas = GreenTask::create($request->all());
            return response()->json(encodeMsg($projectAreas,200),200);
        }catch (QueryException $e){
            return response()->json(encodeMsg($e->getMessage(),500),500);
        }
    }
     /**
      * 任务量分析修改
      *
      * @bodyParam  date string optional 日期
      * @bodyParam  task_type string optional 任务类型
      * @bodyParam  vegetation_type string optional 植被种类
      * @bodyParam  number string optional 数量
      * @bodyParam  company string optional 单位
      * @bodyParam  start_time datetime optional 开始时间
      * @bodyParam  finish_time datetime optional 完成时间
      * @bodyParam  time string optional 工作时长
      * @bodyParam  department string optional 负责组
      * @bodyParam  employee_leader string optional 负责人
      * @bodyParam  level string optional 等级
      * @bodyParam  employee string optional 成员
      * @bodyParam  day_work string optional 日工作量
      */
    public function update(Request $request, $pk){
        $e = genValidate();
        $validator = Validator::make($request->all(),$e);
        if($validator->fails()){
            return response()->json(encodeMsg($validator->errors()->messages(),400),400);
        }
        $carkind = GreenTask::find($pk);
        if($carkind == []){
            return response()->json(encodeMsg(["message"=>"没有该车辆所属区信息"],404),404);
        }
        try {
            $carkind->update($request->all());
            return response()->json(encodeMsg($carkind,200), 200);
        }catch (QueryException $e){
            return response()->json(encodeMsg(["message"=>"所属城市不存在"],400),400);
        }
    }
     /**
      * 任务量分析删除
      */
    public function destroy($pk){
        $data = GreenTask::find($pk);
        if($data == []){
            return response()->json(encodeMsg(["message"=>"没有绿化区域信息"],404),404);
        }
        $data->delete();
        return response()->json(encodeMsg(["message"=>"删除成功"],204),200);
    }
}